<?php

namespace app\index\controller;

use think\Controller;
use think\Request;
use think\Db;
use think\Session;

/**
 * 关于商家的个人信息及房源详情信息(zmh)
 * Class Business
 * @package app\index\controller
 */

class Business extends Controller
{
    /**
     * 显示上传房源的表单(商家个人信息)
     *
     * @return \think\Response
     */
    public function index()
    {
        //从数据库导出导航条数据
        $list = Db::name('index_navigation')->select();
        //从数据库里查出友情链接的数据
      $data = Db::table('lt_link')->select();
      if(Session::get('login_admin')){$result=Session::get('login_admin');} else{$result=Session::get('login_tel');}
       return view('business/addlist',[
           'data'=>$data,
           'info'=>$list,
           'result'=>$result,
       ]);
    }

    /**
     * 显示商家房源详情信息
     *
     * @return \think\Response
     */
    public function create()
    {

        //从数据库导出导航条数据
        $list = Db::name('index_navigation')->select();
        //从数据库里查出友情链接的数据
        $data = Db::table('lt_link')->select();
        //从数据库里查询房源环境表
        //房屋类型分类
        $result = Db::table('lt_fixing_service')->where('fid','40')->select();
        //居家设施分类
        $result1 = Db::table('lt_fixing_service')->where('fid','12')->select();
        //卫浴遍历
        $result2 = Db::table('lt_fixing_service')->where('fid','13')->select();
        //餐厨遍历
        $result3 = Db::table('lt_fixing_service')->where('fid','14')->select();
        //推荐入住人数分类
        $result4 = Db::table('lt_fixing_service')->where('fid','45')->select();
        //提供分类
        $result5 = Db::table('lt_fixing_service')->where('fid','49')->select();
        //打扫分类
        $result6 = Db::table('lt_fixing_service')->where('fid','54')->select();

//       var_dump($result2);
        //渲染输出房源详情页面
        return view('business/houseadd',[
            'data'=>$data,
            'info'=>$list,
            'result'=>$result,
            'result1'=>$result1,
            'result2'=>$result2,
            'result3'=>$result3,
            'result4'=>$result4,
            'result5'=>$result5,
            'result6'=>$result6,

        ]);
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {

        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('image');
       if(empty($file)){
           $this->error('请添加身份证或营业执照');
       }
        // 移动到框架应用根目录/public/uploads/ 目录下
        $info = $file->move(ROOT_PATH . 'public' . DS . '/uploads/business');
        if($info){
        // 成功上传后 获取上传信息
           //获取图片路径
            $path = $info->getSaveName();
            //获取上传资料信息
            $result =  $request->post();

            $data = [
               'usertype'=>$result['usertype'],
                'user_id'=>$result['user_id'],
                'link_name'=>$result['link_name'],
                'link_phone'=>$result['link_phone'],
                'name_company'=>$result['name_company'],
                'id_reg'=>$result['id_reg'],
                'ros_charter'=>$path,
            ];

            //把获取的信息输入到数据表里
            $end = Db::table('lt_goods_details')->data($data)->insert();
            if ($end) {

                return $this->success('编辑成功', url('index/business/create'));
            } else {
                return $this->error('编辑失败');
            }
        }else{
        // 上传失败获取错误信息
            echo $file->getError();
        };



    }

    /**
     * 查询后台房环境顶级分类数据，返回给前台的js
     *
     */
    public function ajax()
    {
        $info=Db::table('lt_fixing_service')->where('fid','0')->select();

        return json($info);
    }

    /**
     * 商家发布房源地址联动，ajax
     */

    public function address()
    {
        // 接收查询的参数
        $upid = empty($_GET['upid'])?0:$_GET['upid'];
        //从地址表查询数据
        $data = Db::table('lt_lamp_address')->where('upid',$upid)->select();
        // 将数据以JSon形式返回
        if (!$data) {
            $data = false;
        }
        return json($data);
    }

    //接受房源信息中的联系人与商家联系人做对比（ajax）
    public function linkname()
    {
        //获取session的 id
       if(Session::get('login_admin')){$result=Session::get('login_admin');}else{$result=Session::get('login_tel');}
        $id=$result['id'];
      //从商家详情表里查出联系人
        $end= Request::instance()->param('link_name');
        $data = Db::table('lt_goods_details')->where('user_id',$id)->where('link_name',$end)->select();

        if($data){
            return true;
        }
            return false;

    }



    /**
     * 接受传过来的房源信息(房子详情信息)
     */
    public function providehouse(Request $request )
    {


        //获取session的 id(user_id)
       if(Session::get('login_admin')){$session=Session::get('login_admin');}else{$session=Session::get('login_tel');};
        $user_id=$session['id'];
        // 获取表单上传文件
        $file = request()->file('image');
        //如果上传图片为空则重定向原页面
        if(empty($file)){
            $this->error('请上传房屋照片');
        }

        // 移动到框架应用根目录/public/uploads/ 目录下
        $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads/housepic/');
        if($info){
            // 成功上传后 获取上传信息
            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            $house_pic= $info->getSaveName();

            //接受表单传来的数据
            $data = $request->post();
            //查询地址表的信息
            $pro_id=$data['pro'];
            $city_id=$data['city'];
            $area_id=$data['area'];
            $detail=$data['detial'];
            $result = Db::table('lt_lamp_address')->whereIn('id',[$pro_id ,$city_id,$area_id])->select();
            //循环遍历出地址里面的name值
            foreach($result as $key=>$val){
                $address[]=$val['name'];
            }
            //获得的详细地址(ok)
            $house_address= implode($address).$detail;
            //获得 房屋类型
            $housetype =isset($data['houseType']) ? $data['houseType']:'';
            //正则匹配居家
            foreach($data as $key=>$val){
                $preg = '/^(houseserver)\d+$/';
                preg_match($preg,$key,$array);
                if(!empty($array)){
                    $info4[] = $val;
                }
            }
            //居家的选择值
            if(isset($info4)){
                $houseserver=implode(',',$info4);
            }


            //正则匹配卫浴
            foreach($data as $key=>$val){
                $preg = '/^(bathserver)\d+$/';
                preg_match($preg,$key,$array);
                if(!empty($array)){
                    $info1[] = $val;
                }
            }
            //卫浴的选择值
            if(isset($info1)){
                $bathserver=implode(',',$info1);
            }



            //正则匹配餐厨
            foreach($data as $key=>$val){
                $preg = '/^(wasteserver)\d+$/';
                preg_match($preg,$key,$array);
                if(!empty($array)){
                    $info2[] = $val;
                }
            }
            //餐厨的选择值
            if(isset($info2)){
                $wasteserver=implode(',',$info2);
            }


            //推荐入住人数
            $total = isset($data['total']) ?$data['total'] : '';


            //正则匹配提供
            foreach($data as $key=>$val){
                $preg = '/^(provide)\d+$/';
                preg_match($preg,$key,$array);
                if(!empty($array)){
                    $info3[] = $val;
                }
            }
            //提供的选择值
            if(isset($info3)){
                $provide=implode(',',$info3);
            }

            //打扫房间次数
            $clean =isset($data['clean'])? $data['clean'] : '';

            //出租房屋的价格
            $houseprice = isset($data['price'])? $data['price'] : '';

            //商家（联系人）

            $linkname = $data['link_name'];

            //查询商家的审核信息
            //从数据库中获取商户的权限
            $goodscheck = Db::table('lt_goods_details')->where('user_id',$user_id)->where('link_name',$linkname)->field('audit')->find();

            if( $goodscheck['audit']!=1){

                return $this->error('商家还未审核成功,不能发布房源');
            }


            //给你的房子取一个响亮的名字
            $house_name =isset($data['house_name']) ? $data['house_name'] : '';


            $endresult=[
                'houseserver'=>isset($houseserver) ? $houseserver : '',
                'bathserver'=>isset($bathserver) ? $bathserver : '',
                'wasteserver'=>isset($wasteserver) ? $wasteserver : '',
                'total'=>$total,
                'provide'=>isset($provide) ? $provide : '',
                'houseprice'=>$houseprice,
                'house_pic'=>$house_pic,
                'user_id'=>$user_id,
                'link_name'=>$linkname,
                'createtime'=>date('Y-m-d H:i:s',time()),
                'clean'=>$clean,
                'housetype'=>isset($housetype) ? $housetype : '',
                'house_address'=> $house_address,
                'house_name'=>$house_name,

            ];
            //把商家选择的信息插入房屋详情表
            $lastend = Db::table('lt_house_details')->data($endresult)->insert();

            if ($lastend) {
                return $this->success('编辑成功', url('index/personcenter/index'));
            } else {
                return $this->error('编辑失败');
            }

        }else{
            // 上传失败获取错误信息
            echo $file->getError();
        }


    }

      //显示房源页面

     public function houseresource()
     {
         //从数据库导出导航条数据
         $list = Db::name('index_navigation')->select();
         //从数据库里查出友情链接的数据
         $data = Db::table('lt_link')->select();

         //获取session的 id

         if(Session::get('login_admin')){$result=Session::get('login_admin');} else{$result=Session::get('login_tel');}
         $id=$result['id'];
         //通过userid查看利用用户发布的房源信息
         $resource = Db::table('lt_house_details')->where('user_id',$id)->select();
//         var_dump($resource);
         //渲染页面
         return view('business/resource',[
             'data'=>$data,
             'info'=>$list,
             'houseresource'=> $resource,
         ]);

     }

    /**
     * 通过前台传过来的数据使用ajax请求查询出商家的详细信息
     */
    public function gooddetails(Request $request)
    {
        $end = Request::instance()->param();
        $link_name = $end['link_name'];
        $user_id = $end['user_id'];
        //查询出商家信息
        $data =Db::table('lt_goods_details')->where('link_name',$link_name)->where('user_id',$user_id)->select();
        $data1=$data[0];
        return json($data1);
    }



    /**
     * 显示用户发布房源的信息
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {

    }

    /**
     * 显示编辑房源信息.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //从数据库导出导航条数据
        $list = Db::name('index_navigation')->select();
        //从数据库里查出友情链接的数据
        $data = Db::table('lt_link')->select();
        //通过传来的id 获取房源的详细信息
        $result = Db::table('lt_house_details')->find($id);
//        var_dump($result);
        return view('business/houseedit',[
            'data'=>$data,
            'info'=>$list,
            'result'=>$result,

        ]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $info = $request->put();
//        var_dump($info,$id);
        $data = [
            'house_name'=>$info['house_name'],
            'house_address'=>$info['house_address'],
            'houseprice'=>$info['houseprice'],
            'createtime'=>date('Y-m-d H:i:s',time()),
        ];

        //把修改的数据添加到数据库
        $result = Db::table('lt_house_details')->where('id',$id)->update($data);
        if ($result) {
            return $this->success('编辑成功', url('index/business/houseresource'));
        } else {
            return $this->error('编辑失败');
        }


    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $result = Db::table('lt_house_details')->delete($id);

        if($result){
            $info['status']= true;
            $info['id']=$id;
            $info['info'] = 'ID为:' . $id . '的房源删除成功';
        }else{
            $info['status']= false;
            $info['id']=$id;
            $info['info'] = 'ID为:' . $id . '的房源删除失败';
        }
        return json($info);
    }


    /**
     * 用来查看商家个人详细信息(个人中心)
     */

    public function information()
    {
        //从数据库导出导航条数据
        $list = Db::name('index_navigation')->select();
        //从数据库里查出友情链接的数据
        $data = Db::table('lt_link')->select();
        //获取session的 id(user_id)
        if(Session::get('login_admin')){$session=Session::get('login_admin');}else{$session=Session::get('login_tel');};
        $user_id=$session['id'];

        //通过user_id查出 商家的详细信息
        $goodresource = Db::table('lt_goods_details')->where('user_id',$user_id)->select();
        //渲染输出商家信息页面
        return view('business/goodslist',[
            'data'=>$data,
            'info'=>$list,
            'goodresource'=>$goodresource,
        ]);
    }

    public function goodsinformationedit()
    {
        //从数据库导出导航条数据
        $list = Db::name('index_navigation')->select();
        //从数据库里查出友情链接的数据
        $data = Db::table('lt_link')->select();
        //根据传过来的商家id 查出商家的详情信息
        $good = Request::instance()->param();
        $id = $good['id'];
        //通过id查出 商家的详细信息
        $goodresource = Db::table('lt_goods_details')->where('id', $id)->find();
        //渲染输出编辑商家信息的详细页面
        return view('business/goodsedit',[
            'data'=>$data,
            'info'=>$list,
            'goodresource'=>$goodresource,
        ]);
    }

     //前台接受修改商家的详细信息
    public function goodsinformationupdate(Request $request)
    {
        //接受文件传过来的文本信息
        $request = Request::instance()->param();
        //接受图片信息
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('image');
       if(empty($file)){
           $data=[
                'usertype'=>$request['usertype'],
                'link_name'=>$request['link_name'],
                 'audit'=>$request['audit'],
                 'link_phone'=>$request['link_phone'],
               'name_company'=>$request['name_company'],
               'id_reg'=>$request['id_reg']
           ];
       }else{

           // 移动到框架应用根目录/public/uploads/ 目录下
           $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads/business');
           if($info){
               // 成功上传后 获取上传信息 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
               $path=$info->getSaveName();
              $data=[
                  'usertype'=>$request['usertype'],
                  'link_name'=>$request['link_name'],
                  'audit'=>$request['audit'],
                  'link_phone'=>$request['link_phone'],
                  'name_company'=>$request['name_company'],
                  'id_reg'=>$request['id_reg'],
                  'ros_charter'=>$path,
              ];
           }else{
               // 上传失败获取错误信息
               echo $file->getError();
           }

       }
        //把修改得到的数据插入到数据库
        //把修改的数据添加到数据库
        $result = Db::table('lt_goods_details')->where('id',$request['id'])->update($data);
        if ($result) {
            return $this->success('商户编辑成功', url('index/business/information'));
        } else {
            return $this->error('商户编辑失败');
        }

    }

     //接受商家id信息 并删除
    public function deletegoodsinfor($id)
    {
        //根据 商家 id 查出该商家的名字
        $result = Db::table('lt_goods_details')->where('id',$id)->field('link_name')->find() ;
        //获取该商户的名字
        $link_name = $result['link_name'];
        //通过该商户的名字 确认是否有房源
        $data = Db::table('lt_house_details')->where('link_name',$link_name)->select();
        if(empty($data)){
            //如果没有房源则可以删除  根据商户的id 删除商户
            $end = Db::table('lt_goods_details')->delete($id);

            if($end){
                $info['status']= true;
                $info['id']=$id;
                $info['info'] = 'ID为:' . $id . '的房源删除成功';
            }else{
                $info['status']= false;
                $info['id']=$id;
                $info['info'] = 'ID为:' . $id . '的房源删除失败';
            }
            return json($info);
        }else{
            $info['status']= false;
            $info['id']=$id;
            $info['info'] ='该商家有房源在本平台，不能删除';
            return json($info);
        }

    }
}
